package org.example.reggie.handler;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.example.reggie.utils.ThreadLocalUtil;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

/**
 * 使用mybatis-plus提供的元数据处理器 实现公共字段的填充不用每次都要重写一遍，比如CreateTime,updateTime,
 * CreateUser,updateUser啊这些公共字段，不过这些字段要加注解@TableField 表示为可以自动填充的字段
 */
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        //填充创建时间
        metaObject.setValue("createTime", LocalDateTime.now());
        //填充 更新的时间
        metaObject.setValue("updateTime", LocalDateTime.now());
        //BaseContext工具类获取当前登陆人员信息
        //填充创建人信息
        metaObject.setValue("createUser", (Long) ThreadLocalUtil.getMap().get("id"));
        //填充更新人信息
        metaObject.setValue("updateUser", (Long) ThreadLocalUtil.getMap().get("id"));
    }

    @Override
    public void updateFill(MetaObject metaObject) {

        //更新 更新的时间
        metaObject.setValue("updateTime", LocalDateTime.now());
        //更新更新人员
        metaObject.setValue("updateUser", (Long) ThreadLocalUtil.getMap().get("id"));
    }
}
